What is fast-deep-equal?
The fast-deep-equal package is a fast deep equality comparison library. It allows developers to check if two objects, arrays, or values are deeply equal to each other, meaning that their structure and nested values are identical.
What are fast-deep-equal's main functionalities?
Deep equality check for objects
This feature allows you to compare two objects to determine if they are deeply equal.
const equal = require('fast-deep-equal');
const obj1 = { a: 1, b: { c: 2 } };
const obj2 = { a: 1, b: { c: 2 } };
console.log(equal(obj1, obj2)); // true
Deep equality check for arrays
This feature allows you to compare two arrays to determine if they are deeply equal, including nested arrays.
const equal = require('fast-deep-equal');
const arr1 = [1, 2, [3, 4]];
const arr2 = [1, 2, [3, 4]];
console.log(equal(arr1, arr2)); // true
Deep equality check for values
This feature allows you to compare two primitive values to determine if they are equal.
const equal = require('fast-deep-equal');
const val1 = 'value';
const val2 = 'value';
console.log(equal(val1, val2)); // true
Other packages similar to fast-deep-equal
lodash.isequal
Lodash's isEqual function is a popular utility for performing deep equality checks. It is more feature-rich than fast-deep-equal, handling more edge cases and supporting customizer functions, but it may be slower for simple comparisons due to its comprehensive approach.
deep-equal
The deep-equal package provides a similar deep equality checking functionality. It is less performant than fast-deep-equal but offers a strict comparison mode that uses the === operator for equality checks.
nano-equal
Nano-equal is a minimalistic library for deep equality checks. It is designed to be small and fast, similar to fast-deep-equal, but may not handle as many edge cases.
fast-deep-equal
The fastest deep equal
Install
npm install fast-deep-equal
Features
- ES5 compatible
- works in node.js (0.10+) and browsers (IE9+)
- checks equality of Date and RegExp objects by value.
Usage
var equal = require('fast-deep-equal');
console.log(equal({foo: 'bar'}, {foo: 'bar'}));
Performance benchmark
Node.js v9.11.1:
fast-deep-equal x 226,960 ops/sec ±1.55% (86 runs sampled)
nano-equal x 218,210 ops/sec ±0.79% (89 runs sampled)
shallow-equal-fuzzy x 206,762 ops/sec ±0.84% (88 runs sampled)
underscore.isEqual x 128,668 ops/sec ±0.75% (91 runs sampled)
lodash.isEqual x 44,895 ops/sec ±0.67% (85 runs sampled)
deep-equal x 51,616 ops/sec ±0.96% (90 runs sampled)
deep-eql x 28,218 ops/sec ±0.42% (85 runs sampled)
assert.deepStrictEqual x 1,777 ops/sec ±1.05% (86 runs sampled)
ramda.equals x 13,466 ops/sec ±0.82% (86 runs sampled)
The fastest is fast-deep-equal
To run benchmark (requires node.js 6+):
npm install
node benchmark
License
MIT